package net.oschina.bilbodai.common.beanutil.property.annotation;

import net.oschina.bilbodai.common.beanutil.property.mapping.CollectionMappingMode;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * @author daimao  Date: 2016/12/27 Time: 下午2:15
 * @version $Id$
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.FIELD })
public @interface MappedCollection {

    /**
     * <pre>
     * MappedCollection("name")
     * List&lt;Foo&gt; foos
     * </pre>
     * 表示用Foo中的name字段作为每次mapping迭代的路径的值。即：foos.f1, foos.f2
     * 否则，默认是以列表序号，即 foos.0, foos.1
     *
     * @return 当需要mapping的字段是集合类型，并且集合类型又个字段可以作为列表中的唯一键使用。那么可以将这个字段路径设置好。
     */
    String keyPath();

    /**
     * @return 集合map的类型
     */
    CollectionMappingMode mode() default CollectionMappingMode.NOT_SET;
}